# 什么是高阶函数和闭包并举例说明。

##########
# 高阶函数是指能够接受函数作为参数，或者返回一个函数作为结果的函数。
# 在其他编程语言中，这有时也被称为函数式编程的一部分。
# 在 Python 中，函数是第一类对象，因此可以方便地传递函数作为参数或返回函数。
##########


def apply_operation(operation, x, y):
    return operation(x, y)


def add(x, y):
    return x + y


def multiply(x, y):
    return x * y


result1 = apply_operation(add, 3, 4)
print(result1)  # 7

result2 = apply_operation(multiply, 3, 4)
print(result2)  # 12


##########
# 闭包是指在一个函数内部定义的函数，并且内部函数可以访问外部函数的变量。
# 这意味着，即使外部函数已经执行完毕，内部函数仍然可以引用外部函数中的变量。
# 闭包使得函数变得更灵活，能够记住创建它们的上下文信息。
##########
def outer_function(x):
    def inner_function(y):
        return x + y

    return inner_function


closure1 = outer_function(10)
result1 = closure1(5)
print(result1)  # 15

closure2 = outer_function(20)
result2 = closure2(5)
print(result2)  # 25
